/**
  ******************************************************************************
  * @file    main.c 
  * @author  18408107475@163.com
  * @version v1.2
  * @date    2025-05-13
  * @brief   DHT11温湿度监测系统主程序
  * @details 
  * 硬件配置：
  *   - MCU: STM32F10x系列
  *   - 传感器: DHT11 (PG11)
  *   - 串口: USART1 (PA9-TX/PA10-RX) 115200bps
  *   - 系统时钟: 根据实际配置填写（如72MHz）
  * 
  * 软件特性：
  *   - 每2秒读取一次温湿度数据
  *   - 通过串口输出格式化数据
  *   - 自动校验数据有效性
  *   - 精确延时保证通信时序
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"          // STM32标准外设库（V3.5.0）
#include "Delay.h"              // 精确延时库（基于SysTick）
#include "USART1_Config.h"      // 调试串口配置（PA9/PA10）
#include "DHT11_Config.h"       // DHT11驱动

/* 变量定义 ------------------------------------------------------------------*/
// 注：DHT11_Buf已在DHT11_Config.h中声明为extern

/* 主程序 --------------------------------------------------------------------*/
int main(void)
{
    /* 硬件初始化 */
    USART1_Config(115200);      // 初始化调试串口（115200bps）
    DHT11_Config();             // 初始化DHT11
    
    /* 上电稳定等待（DHT11要求至少1秒） */
    Delay_ms(1200);             // 实际等待1.2秒，留有余量
    
    /* 主循环 */
    while(1)
    {
        /* 数据读取与处理 */
        if(DHT11_ReadData(DHT11_Buf))  // 成功读取时返回true
        {
            USART1_Printf("Humidness  : %d %%RH\r\n"  , DHT11_Buf[0]);  // 湿度整数部分
            USART1_Printf("Temperature: %d oC\r\n"    , DHT11_Buf[2]);  // 温度整数部分
            USART1_Printf("Checkout   : 0x%02X\r\n\n" , DHT11_Buf[4]);  // 校验和（调试用）
        }
        else
        {
            USART1_Printf("! Data reading failed\r\n\n");  // 错误提示
        }
        
        /* 采样间隔控制 */
        Delay_ms(500);  // DHT11要求两次读取间隔≥1秒
    }
}
